package com.leo;

import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;

/**
 * @ClassName GroupDemo
 * @Description group 布局
 * @Author wangss
 * @date 2020.05.16 21:50
 * @Version 1.0
 */
public class GroupDemo extends Application {

    private int i = 3;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        Button button = new Button("b1");
        Button button1 = new Button("b2");
        Button button2 = new Button("b3");

        // 设置按钮在group中的xy位置
        button.setLayoutX(10d);
        button.setLayoutY(10d);

        button1.setLayoutX(100d);
        button1.setLayoutY(10d);

        button2.setLayoutX(200d);
        button2.setLayoutY(10d);

        // 设置按钮的大小
        button.setPrefHeight(50d);
        button.setPrefWidth(50d);

        button1.setPrefHeight(50d);
        button1.setPrefWidth(50d);

        button2.setPrefHeight(50d);
        button2.setPrefWidth(50d);

        final Group group = new Group();
        // 增加组件
        group.getChildren().addAll(button, button1, button2);
        // 移除组件
//        group.getChildren().remove(button);
        // 清空组件
//        group.getChildren().clear();
        // 自动调整大小
//        group.setAutoSizeChildren(false);

        // 透明
//        group.setOpacity(0.5);

        // 判断group中xy坐标轴上是否包含某个子组件
        group.contains(0, 10);

        // 获取所有的子组件
        Object[] objects = group.getChildren().toArray();
        for (int i = 0; i < objects.length; i++) {
            System.out.println(objects[i]);
        }

        // 监听
        group.getChildren().addListener(new ListChangeListener<Node>() {
            @Override
            public void onChanged(Change<? extends Node> c) {
                System.out.println("当前子组件数量 = " + c.getList().size());
            }
        });

        // 给按钮增加点击事件
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                Button button3 = new Button("button" + i++);
                button3.setLayoutX(300d);
                button3.setLayoutY(10d + i*10);
                group.getChildren().add(button3);
            }
        });

        Scene scene = new Scene(group);

        primaryStage.setScene(scene);
        primaryStage.setTitle("group");
        primaryStage.setWidth(500d);
        primaryStage.setHeight(500d);
        primaryStage.show();
    }
}
